package com.pmpd.activity.service.api;

import com.pmpd.activity.controller.api.param.ActivityProgressParam;
import com.pmpd.activity.po.ActivityProgress;
import com.pmpd.activity.po.ActivityTask;
import com.pmpd.activity.po.ActivityUser;

import java.util.List;
/**
 * @Author liuying
 * @Description 活动每日进程服务层接口
 * @Date 15:07 2018/6/7
 */
public interface ApiActivityProgressService {
    /**
     * @Author liuying
     * @param progressParam 进程参数
     * @Description 同步计步睡眠和跑步数据
     * @Date 14:50 2018/6/11
     */
    ActivityProgress synchrodata(ActivityProgress progressParam);

    /**
     * @Author liuying
     * @param userId 用户id
     * @param activityId 活动id
     * @Description 获取用户任务完成天数
     * @Date 15:50 2018/6/12
     */
    int getFinishDays(long userId, long activityId);

    /**
     * @Author liuying
     * @param userId 用户id
     * @param activityId 活动id
     * @param type 活动类型
     * @param seconds 时间戳
     * @Description 创建默认用户进程
     * @Date 20:06 2018/6/13
     */
    ActivityProgress addProgress(long activityId, long userId, int type, long seconds);

    /**
     * @Author liuying
     * @param ActivityUsers 参加活动的用户列表
     * @Description 提前批量插入活动进程
     * @Date 21:06 2018/6/13
     */
    int bulkInsert(List<ActivityUser> ActivityUsers);

    /**
     * @Author liuying
     * @Description 批量更新前一天活动进程
     * @Date 22:54 2018/6/13
     */
    boolean bulkUpdate();

    /**
     * @Author liuying
     * @param sevenDaysTrainingId 七天养成计划活动id
     * @param status 状态
     * @Description 批量获取用户活动完成天数
     * @Date 16:40 2018/6/14
     */
    List<ActivityUser> getBulkProgress(long sevenDaysTrainingId, int status);

    /**
     * @Author liuying
     * @param userId 用户id
     * @param activityId 活动id
     * @param seconds 时间戳
     * @Description 创建明日用户进程
     * @Date 20:06 2018/6/13
     */
    ActivityProgress addNextDayProgress(long activityId, long userId, long seconds);

    /**
     * @Author liuying
     * @param userId 用户id
     * @param activityId 活动id
     * @param timestamp 时间戳
     * @Description 查询该活动该用户进程信息
     * @Date 11:06 2018/6/20
     */
    ActivityTask getProgress(long activityId, long userId, long timestamp);

    /**
     * @Author liuying
     * @param param 任务提醒参数
     * @Description 任务提醒是否设置
     * @Date 15:52 2018/6/21
     */
    String isSetTaskAlarm(ActivityProgressParam param);

    /**
     * @Author liuying
     * @param param 任务提醒参数
     * @Description 任务提醒加入缓存
     * @Date 16:26 2018/6/21
     */
    boolean addTaskAlarm(ActivityProgressParam param);
}
